package com.shujia.wyh.day28;

import java.lang.reflect.Constructor;

/*
    通过反射获取Class文件对象中私有的构造方法并创建对象
 */
public class ReflexDemo3 {
    public static void main(String[] args) throws Exception {
        //获取Person类的Class文件对象
        Class<?> c1 = Class.forName("com.shujia.wyh.day28.Person");

        //获取私有的构造方法
        Constructor<?> con1 = c1.getDeclaredConstructor(String.class, int.class);

        //IllegalAccessException 非法的访问异常
        //构造方法是私有，可以获取到，但是不能这样使用
        //通过构造方法创建对象
        //暴力访问
        con1.setAccessible(true); //如果这里的值是true的化，表示反射对象在使用的时候，取消Java语言的访问检查
        Object o = con1.newInstance("李四", 18);
        System.out.println(o);

        //向下转型
        Person p = (Person) o;
        p.eat("汉堡");
    }
}
